package com.flyemu.share.controller;

import cn.dev33.satoken.annotation.SaCheckLogin;
import cn.hutool.core.lang.Assert;
import com.flyemu.share.entity.Admin;
import com.flyemu.share.entity.User;
import com.flyemu.share.service.AdminService;
import com.flyemu.share.service.UserService;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

/**
 * @功能描述: 商户管理员管理
 * @创建时间: 2023年08月08日
 * @公司官网: www.fenxi365.com
 * @公司信息: 纷析云（杭州）科技有限公司
 * @公司介绍: 专注于财务相关软件开发, 企业会计自动化解决方案
 */
@RestController
@RequestMapping("/user")
@RequiredArgsConstructor
@SaCheckLogin
public class UserController {

    private final UserService userService;


    @GetMapping
    public JsonResult list(Page page) {
        return JsonResult.successful(userService.query(page));
    }


    @PostMapping
    public JsonResult save(@RequestBody @Valid User user) {
        Assert.isNull(user.getId(), "新增管理员Id必须为空~");
        userService.save(user);
        return JsonResult.successful();
    }


    @PutMapping
    public JsonResult update(@RequestBody @Valid  User user) {
        Assert.notNull(user.getId(), "更新管理员Id不允许为空~");
        userService.save(user);
        return JsonResult.successful();
    }


    @DeleteMapping("/{userId}")
    public JsonResult delete(@PathVariable Integer userId, Integer merchantId) {
        userService.delete(userId, merchantId);
        return JsonResult.successful();
    }

    /**
     * 更新密码
     *
     * @param userId 管理员ID
     * @return
     */
    @PutMapping("/update/password/{userId}")
    public JsonResult updatePassword(@PathVariable Integer userId,String oldPassword,String newPassword) {
        userService.updatePassword(userId,oldPassword,newPassword);
        return JsonResult.successful();
    }

    /**
     * 重置密码
     *
     * @param userId 管理员ID
     * @return
     */
    @PutMapping("/reset/password/{userId}")
    public JsonResult resetPassword(@PathVariable Integer userId, Integer merchantId) {
        userService.resetPassword(userId, merchantId);
        return JsonResult.successful();
    }
}
